現時点での最新バージョン(10.0.0)のマニュアルを読みながらShaderGraphを使ってみようと思います https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/First-Shader-Graph.html
グラフの作成
ShaderGraphを利用する上でまずは専用のアセットを用意します ProjectViewの任意のフォルダから **Create > Schaders **
Blank Shader Graph を選択するとなにもない空の状態のアセットが作成されます
ダブルクリックかInspectorのOpenShaderEditorでEditorを開きます
今回は予めいくつかの手順が構築されている URP > List Shader Graph を選択してみます
ノードの作成
新しくノードを作成します。ノードは1作業単位を表現します **右クリック > Create Node > Color **を選択
色情報をFragment処理につなげてみます 視覚的簡単に接続可能です。
Lit で作成したときは Fragmentは入力が6つ存在しています
- Base Color
- Normal(Trangent Space)
- Metalic
- Smoothness
- Emission
- Ambient Occlusion
とりあえず色を変えたいので、ColorとBaseColorをつなげます。 ColorのOutputSlotから FragmentのBaseColorのInputSlotにドラッグ (Nodeコネクタをそれぞれ xxx Slot と言うようです)
カラーバークリックしてピッカーで好きな色に変えてみると、Previewに即時反映されていることが確認できます これが3Dオブジェクトに反映されます
保存
左上の Save Asset を押して現在の作業内容を保存
マテリアルの作成
シェーダーを作成したのでこれをオブジェクトに適用させます。 そのためにはマテリアルが必要なため Create > Material で空のマテリアルを作成
Shaderを選択する手順と同じくShaderの中に ShaderGraph 項目が存在しているため、そこから今回自分で作成したShaderGraphを選択
プロパティを使用してグラフを編集
カラーの設定が可能になりましたが、色を編集するためには都度ShaderGrapthを開かなければなります Materialから色を編集するためにプロパティを作成します
ShaderGraphからブラックボードと呼ばれるPropertyの入れ物から **+ > Color **を選択 名前はそのまま Color にしておきます
プロパティを選択すると Graph Inspector の Node Settings にオプションが表示されます
- Name : プロパティの名前
- Reference : C#スクリプトからアクセスする時の識別名
- Default : プロパティのデフォルト値
- Mode : プロパティ種によってここは変更されるようです。 Colorの場合 Default or HDR
- Precision : 精度
- 精度については別途記事化したいです。とりあえずデフォルトのまま
- Exposed : ONにするとマテリアルのインスペクタから可視化される
- Override Property Declaration : 更に高度な設定を使用する場合はチェックを入れる
- これも別記事で取り扱いたい。とりあえずデフォルトのまま
プロパティをグラフに反映させる方法は ・ドラッグ&ドロップでグラフに配置する ・**右クリック > Create Node > Properties **から選択する の2種類の方法から取れます
あとはプロパティがインスペクタに公開されるため動的な変更が可能となりました